package com.doctcloud.common.core.constant;

public class RegexConstants {
    /**
     * 手机号正则（中国大陆）：以1开头，第二位3-9，后接9位数字
     */
    public static final String MOBILE_NUMBER_REGEX = "^1[3-9]\\d{9}$";

    /**
     * 固定电话正则（带区号）：区号0开头（2-3位），短横线分隔，后接7-8位号码
     */
    public static final String PHONE_NUMBER_REGEX = "^0\\d{2,3}[-]?\\d{7,8}$";

    /**
     * 电子邮箱正则：支持字母、数字、下划线、短横线，多级域名
     */
    public static final String EMAIL_REGEX = "^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)+$";

    /**
     * 身份证号正则（18位）：包含地址码、生日（1900-2099）、顺序码和校验码（X/x可选）
     */
    public static final String ID_REGEX = "^[1-9]\\d{5}(19|20)\\d{2}((0[1-9])|(1[0-2]))(([0-2][1-9])|10|20|30|31)\\d{3}[0-9Xx]$";

    /**
     * 邮政编码正则（中国大陆）：6位数字，第一位不为0
     */
    public static final String ZIP_REGEX = "^[1-9]\\d{5}$";

    /**
     * 密码强度正则（中等）：至少8位，包含大小写字母和数字
     */
    public static final String PASSWORD_STRONG_REGEX = "^(?=.*[a-z])(?=.*[A-Z])(?=.*\\d).{8,}$";

    /**
     * 纯数字正则：1位及以上数字
     */
    public static final String NUMBER_REGEX = "^\\d+$";

    /**
     * 纯字母正则：大小写不限，1位及以上
     */
    public static final String STRING_REGEX = "^[a-zA-Z]+$";

    /**
     * URL正则：支持http/https/ftp/file协议，包含域名和路径
     */
    public static final String URL_REGEX = "^((https?|ftp|file):\\/\\/)?([\\da-z.-]+)(:\\d+)?([\\/\\w .-]*)*\\/?(\\?.*)?(#.*)?$";

    /**
     * 纯汉字正则：仅包含中文字符（\u4e00-\u9fa5为汉字Unicode范围）
     */
    public static final String CHINESE_REGEX = "^[\\u4e00-\\u9fa5]+$";

    /**
     * IPv4地址正则：匹配0.0.0.0到255.255.255.255
     */
    public static final String IPV4_REGEX = "^((25[0-5]|2[0-4]\\d|[01]?\\d\\d?)\\.){3}(25[0-5]|2[0-4]\\d|[01]?\\d\\d?)$";
}